import pygame
from pygame.sprite import Sprite


class Alien(Sprite):

    def __init__(self, screen: object, settings: object) -> None:
        super().__init__()
        self.screen = screen
        self.settings = settings
        self.image = pygame.image.load(self.settings.image_paths['alien']).convert_alpha()
        self.rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()
        self.direction = 1  # 外星人敌人移动方向，1 表示向右，-1 表示向左

        # rect.x 和 rect.y 是飞船左上角的坐标
        self.rect.x = int(self.rect.width / 2)
        self.rect.y = int(self.rect.height / 4)


    def update(self) -> object:
        """更新外星人敌人的位置"""
        horizontal_move = 2 # 外星人横向移动的距离

        if self.rect.top > self.screen_rect.bottom:  # 外星人敌人飞出屏幕，删除外星人敌人。
            self.kill()
        else:
            self.rect.y += self.settings.other['alien_speed']
            if self.check_edge():
                self.direction *= -1
            self.rect.x += self.direction * horizontal_move * self.settings.other['alien_speed']


    def check_edge(self) -> bool:
        """如果外星人敌人位于屏幕边缘，返回 True"""
        return self.rect.right >= self.screen_rect.right or self.rect.left <= 0